﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Biz_Dal.Biz;
using System.Data.Linq.SqlClient;

namespace Biz_Dal.Dal
{
    public class DalNXB
    {
        //BookIdeas_ShopDataContext htDataContext = new BookIdeas_ShopDataContext();

        internal static int CountListNXB()
        {
            DalCommon dal = new DalCommon();
            var query = (from vt in dal.BookIdeas_ShopDataContext.NhaXuatBans select vt).Distinct().Count();
            return query;
        }

        //lấy id mới
        internal static int IdMaxNXB()
        {
            DalCommon dal = new DalCommon();
            int intIdt = dal.BookIdeas_ShopDataContext.NhaXuatBans.Max(u => u.idNXB);
            return intIdt;
        }

        //Lấy danh nhà xuất bản tất cả các nhà xuất bản
        internal static List<BizNXB> getListNXBAll()
        {
            DalCommon dal = new DalCommon();
            var query = (from vt in dal.BookIdeas_ShopDataContext.NhaXuatBans
                         orderby vt.maNXB descending
                         select new BizNXB
                         {
                             idNXB=vt.idNXB,
                             maNXB = vt.maNXB,
                             tenNXB = vt.tenNXB,
                         }).Distinct<BizNXB>();

            return query.ToList<BizNXB>();
        }


        //Danh nhà xuất bản các nhà xuất bản có mã nhà xuất bản được nhập vào
        internal static BizNXB getNXBByID(int id)
        {
            DalCommon dal = new DalCommon();
            var querry = (from vt in dal.BookIdeas_ShopDataContext.NhaXuatBans
                          where vt.idNXB == id
                          select new BizNXB
                          {
                              idNXB = vt.idNXB,
                              maNXB = vt.maNXB,
                              tenNXB = vt.tenNXB,
                          }).Distinct<BizNXB>();
            if (querry.Count() == 0)
            {
                return null;
            }
            else
            {
                return querry.Single<BizNXB>();
            }
        }

        //Lấy danh nhà xuất bản tất cả các nhà xuất bản có tên được nhập vào
        internal static List<BizNXB> getListNXBByName(string name)
        {
            DalCommon dal = new DalCommon();
            var querry = (from vt in dal.BookIdeas_ShopDataContext.NhaXuatBans
                          where vt.tenNXB == name
                          select new BizNXB
                          {
                              idNXB = vt.idNXB,
                              maNXB = vt.maNXB,
                              tenNXB = vt.tenNXB,
                          }).Distinct<BizNXB>();
            if (querry.Count() == 0)
            {
                return null;
            }
            else
            {
                return querry.ToList<BizNXB>();
            }
        }


        //Danh nhà xuất bản gần đúng các nhà xuất bản có mã nhà xuất bản được nhập vào
        internal static List<BizNXB> getLikeNXBByID(string idNXB)
        {
            DalCommon dal = new DalCommon();
            var querry = (from vt in dal.BookIdeas_ShopDataContext.NhaXuatBans
                          where SqlMethods.Like(vt.maNXB, "%" + idNXB + "%")
                          select new BizNXB
                          {
                              idNXB = vt.idNXB,
                              maNXB = vt.maNXB,
                              tenNXB = vt.tenNXB,
                          }).Distinct<BizNXB>();
            if (querry.Count() == 0)
            {
                return null;
            }
            else
            {
                return querry.ToList<BizNXB>();
            }
        }

        //Lấy danh nhà xuất bản gần đúng tất cả các nhà xuất bản có tên được nhập vào
        internal static List<BizNXB> getListLikeNXBByName(string name)
        {
            DalCommon dal = new DalCommon();
            var querry = (from vt in dal.BookIdeas_ShopDataContext.NhaXuatBans
                          where SqlMethods.Like(vt.tenNXB, "%" + name + "%")
                          select new BizNXB
                          {
                              idNXB = vt.idNXB,
                              maNXB = vt.maNXB,
                              tenNXB = vt.tenNXB,
                          }).Distinct<BizNXB>();
            if (querry.Count() == 0)
            {
                return null;
            }
            else
            {
                return querry.ToList<BizNXB>();
            }
        }

        //Thêm nhà xuất bản
        internal static void insertNXB(BizNXB vtDTO)
        {
            DalCommon dal = new DalCommon();
            NhaXuatBan vt = new NhaXuatBan();
            vt.idNXB = vtDTO.idNXB;
            vt.maNXB = vtDTO.maNXB;
            vt.tenNXB = vtDTO.tenNXB;
            dal.BookIdeas_ShopDataContext.NhaXuatBans.InsertOnSubmit(vt);
            dal.BookIdeas_ShopDataContext.SubmitChanges();
        }

        //Xóa nhà xuất bản
        internal static void deleteNXB(string maNXB)
        {
            DalCommon dal = new DalCommon();
            IEnumerable<NhaXuatBan> list = from vt in dal.BookIdeas_ShopDataContext.NhaXuatBans
                                        where vt.maNXB == maNXB
                                        select vt;
            foreach (NhaXuatBan querry in list)
            {
                dal.BookIdeas_ShopDataContext.NhaXuatBans.DeleteOnSubmit(querry);
            }
            dal.BookIdeas_ShopDataContext.SubmitChanges();
        }

        //Sửa nhà xuất bản
        internal static void updateNXB(BizNXB vtDTO)
        {
            DalCommon dal = new DalCommon();
            var querry = (from vt in dal.BookIdeas_ShopDataContext.NhaXuatBans
                          where vt.maNXB == vtDTO.maNXB
                          select vt).FirstOrDefault<NhaXuatBan>();
            querry.tenNXB = vtDTO.tenNXB;
            dal.BookIdeas_ShopDataContext.SubmitChanges();
        }
    }
}
